Most businesses rely on computer systems to store, process and display information that is constantly subject to change. Unfortunately, computers on occasion partially or completely lose their ability to function properly during a crash, or failure. Computer failures have numerous causes, such as power loss, component damage or disconnect, software failure, or interrupt conflict. Such computer failures can be very costly to a business. In many instances, the success or failure of important transactions turn on the availability of accurate and current information. For example, the viability of a shipping company can depend in large part on its computers' ability to track inventory and orders. Banking regulations and practices require money venders to take steps to ensure the accuracy and protection of their computer data. Accordingly, businesses worldwide recognize the commercial value of their data and seek reliable, cost-effective ways to protect the information stored on their computer systems.
One practice used to protect critical data involves data mirroring. Specifically, the mass memory of a backup computer system is made to mirror the memory of a primary computer system. That is, the same updates made to the data on the primary system are made to the backup system. For instance, write requests executed in the memory of the primary computer system are also transmitted to the backup computer system for execution in the backup memory. Under ideal circumstances, and in the event that the primary computer system crashes, the user becomes connected to the backup computer system through the network and continues operation at the same point using the backup computer data. Thus, the user can theoretically access the same files through the backup computer system on the backup mass memory as the user could previously access in the primary system.
There are two basic mirroring approaches for backing up data. Synchronous mirroring involves updating data on the backup computer in the same order as the data updates on the primary computer. Put another way, synchronous mirroring works on the principle that a next update will not be attempted on the primary or backup computer until the previous update has completed on the backup computer. This synchronous technique preserves the order of the updates. That is, all of the updates at the backup system necessarily complete in sequential order. The updated data must be sequentially ordered on the backup computer before it can be used.
As an example of using synchronous mirroring, if a primary node must accomplish three updates, the first of these three updates is sent to the backup node as it issues on the primary computer. The second update of the three will not issue at either the primary or the backup computer until the previously received update has been accomplished at the backup computer. Likewise, the third, subsequent update will not issue at either computer until the second update has executed at the backup computer. As such, the synchronous mirroring approach provides good data integrity. That is, the data on the backup computer should track the primary data updates at nearly any potential point of failure.
Despite the good data integrity, however, a disadvantage to synchronous mirroring includes poor system performance. For instance, it can take a relatively long period of time for a particular update on the backup system to complete in proper order. For instance, the update request may have to be routed to a device that is external to the primary computer, and may even be geographically remote. Consequently, subsequent updates on the primary and backup systems are delayed. Over time, the ordered requirement of synchronous mirroring can thus result in unacceptable delays that adversely affect system performance.
Another mirroring approach, asynchronous mirroring, provides improved performance by issuing updates at the backup node without regard to order. That is, a backup computer in asynchronous mirroring attempts to process all received updates in parallel. The update requests are processed when received and while other requests are processing. The backup computer later quiesces, or puts in proper, sequential order, the updates after the application stops running. The main advantage of asynchronous over synchronous mirroring, which continuously orders each update, is that the parallel processing greatly reduces delay times.
For instance, using the example of the three update requests from above, all three requests may be processed concurrently, or generally within the same window of time and without regard to order. Under one scenario as a consequence, the first and third updates may finish before the second update is processed and completed. The parallel processing of the updates allows for faster updates at the backup system.
Despite the improved processing times provided by asynchronous mirroring, however, data at the backup system generally has less integrity than is accomplished using synchronous mirroring. For instance, should the primary node crash before the second or first update completes, then some of the updates provided to the backup computer will be sequentially out of order, and consequently, unusable.
The inefficiency and unreliability of these existing mirroring techniques become exacerbated in a clustered computer environment. Clustered systems include computers, or nodes, that are networked together to cooperatively perform computer tasks. A primary computer of the clustered system has connectivity with a resource, such as a disk, tape or other storage unit, a printer or other imaging device, or another type of switchable hardware component or system. Clustering is often used to increase overall performance, since multiple nodes can process in parallel a larger number of tasks or other data updates than a single computer otherwise could. The increased number of updates places a larger burden on the clustered computer system to efficiently and accurately backup data.
Because of increased computing demands, as well as the inefficiency of synchronous mirroring and the unreliability of asynchronous mirroring, a significant need exists in the art for an improved manner of updating data at a backup computer system.